package com.ufpr.bean;

import java.sql.SQLException;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.com.sebrae.pr.sgp.entities.Cliente;

//import com.naotebuk.dao.ClienteDAO;
//import com.naotebuk.dao.ConsertoDAO;
//import com.naotebuk.entity.Cliente;
//import com.naotebuk.utils.CpfUtil;

@ManagedBean
@SessionScoped
public class ClienteManagedBean extends GenericManagedBean {

	// fields
	private Cliente cliente;
	private Cliente clienteSelecionado;
	private List<Cliente> clientes;

	// public methods
	public void salvar() {
		
		// data de nascimento
//		if (this.clienteSelecionado.getDataDeNascimento() != null && this.clienteSelecionado.getDataDeNascimento().after(new Date())) {
//			FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, null, "Data de nascimento inválida.");
//			FacesContext.getCurrentInstance().addMessage(":formEdicao:calDtNascimento", msg);
//			return;
//		}

		// cpf
//		this.clienteSelecionado.setCpf(this.clienteSelecionado.getCpf().replaceAll("\\D", ""));
//		if (!CpfUtil.cpfValido(this.clienteSelecionado.getCpf())) {
//			FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, null, "CPF inválido.");
//			FacesContext.getCurrentInstance().addMessage(":formEdicao:editCpf", msg);
//			return;
//		}
//		if (this.clienteSelecionado.getIdCliente() == 0 && ClienteDAO.cpfCadastrado(this.clienteSelecionado.getCpf())) {
//			FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, null, "CPF ja cadastrado no sistema.");
//			FacesContext.getCurrentInstance().addMessage(":formEdicao:editCpf", msg);
//			return;
//		}
//		
//		FacesMessage msg = null;
//		if (ClienteDAO.save(clienteSelecionado)) {
//			msg = new FacesMessage(FacesMessage.SEVERITY_INFO, null, "Cliente salvo com sucesso.");
//			RequestContext.getCurrentInstance().execute("dlgEdicao.hide()");
//		} else 
//			msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, null, "Não foi possível salvar o cliente.");
//		FacesContext.getCurrentInstance().addMessage(null, msg);
	}
	
	public void excluirCliente() {
		System.out.println("Excluindo cliente..." + clienteSelecionado.getNome());
		try {
//			if (ConsertoDAO.existeConserto(clienteSelecionado)) {
//				FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, null, "Não é permitido excluir cliente que possui conserto registrado no sistema.");
//				FacesContext.getCurrentInstance().addMessage(null, msg);
//				return;
//			}
//			if (ClienteDAO.delete(clienteSelecionado)) {
//				FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, null, "Cliente excluido com sucesso.");
//				FacesContext.getCurrentInstance().addMessage(null, msg);
//			} else {
//				FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, null, "Erro ao excluir Cliente.");
//				FacesContext.getCurrentInstance().addMessage(null, msg);
//			}
		} catch (Exception e) {
			e.printStackTrace();
		}
			
	}
	
	public void selecionaCliente(Cliente cliente) {
		this.clienteSelecionado = cliente;
	}
	
	public void pesquisaCliente(Cliente c) {
		try {
			c.setCpf(c.getCpf().replaceAll("\\D", ""));
//			clientes = ClienteDAO.getClientes(c);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public String novoCliente() {
		this.clienteSelecionado = new Cliente();
		System.out.println("Novo cliente" );
		return "";
	}
	
	// getters
	public Cliente getCliente() {
		if (cliente == null)
			 cliente = new Cliente();
		return cliente;
	}
	
	public List<Cliente> getClientes() throws SQLException {
//		clientes = ClienteDAO.getClientes();
		return clientes;
	}
	
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
	public Cliente getClienteSelecionado() {
		System.out.println("Get cliente selecionado " + clienteSelecionado);
		return clienteSelecionado;
	}
	
	
	// setters
	public void setClienteSelecionado(Cliente clienteSelecionado) {
		this.clienteSelecionado = clienteSelecionado;
	}
}
